`:top
In `F33f`_`[computing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computing]`_`f, `!text-based user interfaces`! (`!TUI`!) (alternately `!terminal user interfaces`!, to reflect a dependence upon the properties of `F33f`_`[computer terminals`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_terminal]`_`f and not just text), is a `F33f`_`[retronym`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Retronym]`_`f describing a type of `F33f`_`[user interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=User_interface]`_`f (UI) common as an early form of `F33f`_`[human–computer interaction`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Human–computer_interaction]`_`f, before the advent of bitmapped displays and modern conventional `F33f`_`[graphical user interfaces`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Graphical_user_interface]`_`f (GUIs). Like modern GUIs, they can use the entire `F33f`_`[screen`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Electronic_visual_display]`_`f area and may accept `F33f`_`[mouse`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_mouse]`_`f and other inputs. They may also use color and often structure the display using `F33f`_`[box-drawing characters`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Box-drawing_character]`_`f such as ┌ and ╣. The modern context of use is usually a `F33f`_`[terminal emulator`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Terminal_emulator]`_`f.
>>Contents
• `F0af`_`[Types of text terminals`#types-of-text-terminals]`_`f
• `F0af`_`[On ANSI-compatible terminals`#on-ansi-compatible-terminals]`_`f
• `F0af`_`[Under DOS and Microsoft Windows`#under-dos-and-microsoft-windows]`_`f
• `F0af`_`[Under Unix-like systems`#under-unix-like-systems]`_`f
• `F0af`_`[OpenVMS`#openvms]`_`f
• `F0af`_`[Oberon`#oberon]`_`f
• `F0af`_`[In embedded systems`#in-embedded-systems]`_`f
• `F0af`_`[Other uses`#other-uses]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[Examples of programming libraries`#examples-of-programming-libraries]`_`f
• `F0af`_`[References`#references]`_`f
-─
>>Types of text terminals
From `F33f`_`[text application`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Console_application]`_`f's point of view, a text screen (and communications with it) can belong to one of three types (here ordered in order of decreasing accessibility):
1. A genuine `F33f`_`[text mode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_mode]`_`f display, controlled by a `F33f`_`[video adapter`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Video_adapter]`_`f or the central processor itself. This is a normal condition for a locally running application on various types of `F33f`_`[personal computers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Personal_computer]`_`f and `F33f`_`[mobile devices`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mobile_device]`_`f. If not deterred by the `F33f`_`[operating system`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Operating_system]`_`f, a smart program may exploit the full power of a hardware text mode.
2. A text mode `F33f`_`[emulator`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Emulator]`_`f. Examples are `F33f`_`[xterm`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Xterm]`_`f for `F33f`_`[X Window System`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=X_Window_System]`_`f and `F33f`_`[win32 console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Win32_console]`_`f (in a window mode) for `F33f`_`[Microsoft Windows`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_Windows]`_`f. This usually supports programs which expect a real text mode display, but may run considerably slower. Certain functions of an advanced text mode, such as an own `F33f`_`[font`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Raster_font]`_`f uploading, almost certainly become unavailable.
3. A remote `F33f`_`[text terminal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_terminal]`_`f. The communication capabilities usually become reduced to a `F33f`_`[serial line`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Serial_line]`_`f or its emulation, possibly with few `F33f`_`[ioctl`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ioctl]`_`f()s as an `F33f`_`[out-of-band`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Out-of-band_data]`_`f channel in such cases as `F33f`_`[Telnet`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Telnet]`_`f and `F33f`_`[Secure Shell`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Secure_Shell]`_`f. This is the worst case, because software restrictions hinder the use of capabilities of a remote display device.
Under `F33f`_`[Linux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux_kernel]`_`f and other `F33f`_`[Unix-like`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Unix-like]`_`f systems, a program easily `F33f`_`[accommodates`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Graceful_degradation]`_`f to any of the three cases because the same interface (namely, `F33f`_`[standard streams`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Standard_streams]`_`f) controls the display and keyboard. See `F33f`_`[below`#windows]`_`f for comparison to Windows.
Many `F33f`_`[TUI programming libraries`#see-also]`_`f are available to help developers build `F33f`_`[TUI applications`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Console_application]`_`f.
>>On ANSI-compatible terminals
`F33f`_`[American National Standards Institute`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=American_National_Standards_Institute]`_`f (ANSI) standard `F33f`_`[ANSI X3.64`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ANSI_X3.64]`_`f defines a standard set of `F33f`_`[escape sequences`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Escape_sequence]`_`f that can be used to drive terminals to create TUIs (see `F33f`_`[ANSI escape code`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ANSI_escape_code]`_`f). Escape sequences may be supported for all three cases mentioned in the above section, allowing arbitrary `F33f`_`[cursor`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_cursor]`_`f movements and color changes. However, not all terminals follow this standard, and many non-compatible but functionally equivalent sequences exist.
>>Under DOS and Microsoft Windows
On `F33f`_`[IBM Personal Computers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=IBM_Personal_Computer]`_`f and `F33f`_`[compatibles`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=IBM_PC_compatible]`_`f, the Basic Input Output System (`F33f`_`[BIOS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=BIOS]`_`f) and `F33f`_`[DOS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=DOS]`_`f system calls provide a way to write text on the screen, and the `F33f`_`[ANSI.SYS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ANSI.SYS]`_`f driver could process standard ANSI escape sequences. However, programmers soon learned that writing data directly to the `F33f`_`[screen buffer`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Screen_buffer]`_`f was far faster and simpler to program, and less error-prone; see `F33f`_`[VGA-compatible text mode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=VGA-compatible_text_mode]`_`f for details. This change in programming methods resulted in many DOS TUI programs. The `F33f`_`[Windows console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_console]`_`f environment is notorious for its emulation of certain EGA/VGA text mode features, particularly random access to the text buffer, even if the application runs in a window. On the other hand, programs running under Windows (both native and DOS applications) have much less control of the display and keyboard than Linux and DOS programs can have, because of aforementioned Windows console layer.
Most often those programs used a blue background for the main screen, with white or yellow characters, although commonly they had also user color customization. They often used `F33f`_`[box-drawing characters`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Box-drawing_character]`_`f in IBM's `F33f`_`[code page 437`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Code_page_437]`_`f. Later, the interface became deeply influenced by `F33f`_`[graphical user interfaces`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Graphical_user_interface]`_`f (GUI), adding `F33f`_`[pull-down menus`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Pull-down_menu]`_`f, overlapping `F33f`_`[windows`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Window_(computing)]`_`f, `F33f`_`[dialog boxes`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Dialog_box]`_`f and `F33f`_`[GUI widgets`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=GUI_widget]`_`f operated by `F33f`_`[mnemonics`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mnemonics_(keyboard)]`_`f or `F33f`_`[keyboard shortcuts`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Keyboard_shortcut]`_`f. Soon `F33f`_`[mouse`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_mouse]`_`f input was added – either at text resolution as a simple colored box or at graphical resolution thanks to the ability of the `F33f`_`[Enhanced Graphics Adapter`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Enhanced_Graphics_Adapter]`_`f (EGA) and `F33f`_`[Video Graphics Array`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Video_Graphics_Array]`_`f (VGA) display adapters to `F33f`_`[redefine the text character shapes by software`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=VGA-compatible_text_mode]`_`f – providing additional functions.
Some notable programs of this kind were `F33f`_`[Microsoft Word`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_Word]`_`f, `F33f`_`[DOS Shell`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=DOS_Shell]`_`f, `F33f`_`[WordPerfect`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=WordPerfect]`_`f, `F33f`_`[Norton Commander`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Norton_Commander]`_`f, `F33f`_`[Turbo Vision`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Turbo_Vision]`_`f based `F33f`_`[Borland`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Borland]`_`f `F33f`_`[Turbo Pascal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Turbo_Pascal]`_`f and `F33f`_`[Turbo C`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Borland_Turbo_C]`_`f (the latter included the `F33f`_`[conio`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Conio.h]`_`f `F33f`_`[library`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Library_(computer_science)]`_`f), `F33f`_`[Lotus 1-2-3`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Lotus_1-2-3]`_`f and many others. Some of these interfaces survived even during the `F33f`_`[Microsoft`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft]`_`f `F33f`_`[Windows 3.1x`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_3.1x]`_`f period in the early 1990s. For example, the `F33f`_`[Microsoft C`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_C]`_`f 6.0 compiler, used to write true GUI programs under `F33f`_`[16-bit`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=16-bit]`_`f Windows, still has its own TUI.
Since its start, `F33f`_`[Microsoft Windows`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft_Windows]`_`f includes a console to display DOS software. Later versions added the `F33f`_`[Windows console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_console]`_`f as a native interface for `F33f`_`[command-line interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Command-line_interface]`_`f and TUI programs. The console usually opens in window mode, but it can be switched to full, true text mode screen and vice versa by pressing the `F33f`_`[Alt`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Alt_key]`_`f and `F33f`_`[Enter`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Enter_key]`_`f keys together. Full-screen mode is not available in Windows Vista and later, but may be used with some workarounds.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]
`F33f`_`[Windows Terminal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_Terminal]`_`f is a `F33f`_`[multi-tabbed`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Tabbed]`_`f `F33f`_`[terminal emulator`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Terminal_emulator]`_`f that `F33f`_`[Microsoft`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft]`_`f has developed for `F33f`_`[Windows 10`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_10]`_`f and later`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f] as a replacement for `F33f`_`[Windows Console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_Console]`_`f.
The `F33f`_`[Windows Subsystem for Linux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_Subsystem_for_Linux]`_`f which was added to Windows by `F33f`_`[Microsoft`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Microsoft]`_`f in 2019, supports running `F33f`_`[Linux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux]`_`f text-based apps on Windows, within `F33f`_`[Windows console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_console]`_`f, `F33f`_`[Windows Terminal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Windows_Terminal]`_`f, and other Windows-based terminals.
>>Under Unix-like systems
In `F33f`_`[Unix-like`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Unix-like]`_`f operating systems, TUIs are often constructed using the terminal control `F33f`_`[library`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Library_(computer_science)]`_`f `*`F33f`_`[curses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Curses_(programming_library)]`_`f`*, or `*`F33f`_`[ncurses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ncurses]`_`f`* (a mostly compatible library), or the alternative `*`F33f`_`[S-Lang`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=S-Lang]`_`f`* library. The advent of the `*curses`* library with `F33f`_`[Berkeley Unix`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Berkeley_Software_Distribution]`_`f created a portable and stable API for which to write TUIs. The ability to talk to various `F33f`_`[text terminal`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_terminal]`_`f types using the same `F33f`_`[interfaces`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=API]`_`f led to more widespread use of "visual" Unix programs, which occupied the entire terminal screen instead of using a simple line interface. This can be seen in `F33f`_`[text editors`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_editor]`_`f such as `F33f`_`[vi`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Vi_(text_editor)]`_`f, `F33f`_`[mail clients`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Email_client]`_`f such as `F33f`_`[pine`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Pine_(email_client)]`_`f or `F33f`_`[mutt`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Mutt_(email_client)]`_`f, system management tools such as `F33f`_`[SMIT`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=System_Management_Interface_Tool]`_`f, SAM, `F33f`_`[FreeBSD`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=FreeBSD]`_`f's `F33f`_`[Sysinstall`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Sysinstall]`_`f and `F33f`_`[web browsers`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Web_browser]`_`f such as `F33f`_`[lynx`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Lynx_(web_browser)]`_`f. Some applications, such as `F33f`_`[w3m`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=W3m]`_`f, and older versions of pine and `F33f`_`[vi`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Vi_(text_editor)]`_`f use the less-able `F33f`_`[termcap`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Termcap]`_`f library, performing many of the functions associated with `F33f`_`[curses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Curses_(programming_library)]`_`f within the application. Custom TUI applications based on `*widgets`* can be easily developed using the `F33f`_`[dialog`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Dialog_(software)]`_`f program (based on `F33f`_`[ncurses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ncurses]`_`f), or the `F33f`_`[Whiptail`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Newt_(programming_library)]`_`f program (based on `F33f`_`[S-Lang`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=S-Lang]`_`f).
In addition, the rise in popularity of `F33f`_`[Linux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Linux]`_`f brought many former DOS users to a Unix-like platform, which has fostered a DOS influence in many TUIs. The program `F33f`_`[minicom`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Minicom]`_`f, for example, is modeled after the popular DOS program `F33f`_`[Telix`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Telix]`_`f. Some other TUI programs, such as the `F33f`_`[Twin`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Twin_(windowing_system)]`_`f desktop, were `F33f`_`[ported`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ported]`_`f over.
Most Unix-like operating systems (Linux, FreeBSD, etc.) support `F33f`_`[virtual consoles`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Virtual_console]`_`f, typically accessed through a Ctrl-Alt-F key combination. For example, under Linux up to 64 consoles may be accessed (12 via function keys), each displaying in full-screen text mode.
The `F33f`_`[free software`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Free_software]`_`f program `F33f`_`[GNU Screen`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=GNU_Screen]`_`f provides for managing multiple sessions inside a single TUI, and so can be thought of as being like a `F33f`_`[window manager`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Window_manager]`_`f for text-mode and command-line interfaces. `F33f`_`[Tmux`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Tmux]`_`f can also do this.
The proprietary `F33f`_`[macOS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=MacOS]`_`f `F33f`_`[text editor`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text_editor]`_`f `F33f`_`[BBEdit`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=BBEdit]`_`f includes a `*shell worksheet`* function that works as a full-screen shell window. The `F33f`_`[free`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Free_software]`_`f `F33f`_`[Emacs`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Emacs]`_`f text editor can run a shell inside of one of its buffers to provide similar functionality. There are several shell implementations in Emacs, but only `B100`F9d9ansi-term`f`b is suitable for running TUI programs. The other common shell modes, `B100`F9d9shell`f`b and `B100`F9d9eshell`f`b only emulate command lines and TUI programs will complain "Terminal is not fully functional" or display a garbled interface. The `F33f`_`[free`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Free_software]`_`f `F33f`_`[Vim`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Vim_(text_editor)]`_`f and `F33f`_`[Neovim`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Neovim]`_`f text editors have terminal windows (simulating `F33f`_`[xterm`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Xterm]`_`f). The feature is intended for running jobs, parallel builds, or tests, but can also be used (with window splits and tab pages) as a lightweight terminal multiplexer.
>>OpenVMS
VAX/VMS (later known as `F33f`_`[OpenVMS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=OpenVMS]`_`f) had a similar facility to `*curses`* known as the Screen Management facility or SMG. This could be invoked from the command line or called from programs using the SMG$ library.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]
>>Oberon
Another kind of TUI is the primary interface of the `F33f`_`[Oberon operating system`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Oberon_(operating_system)]`_`f, first released in 1988 and still maintained. Unlike most other text-based user interfaces, Oberon does not use a text-mode console or terminal, but requires a large bit-mapped display, on which text is the primary target for mouse clicks. Analogous to a `F33f`_`[link`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Hyperlink]`_`f in `F33f`_`[hypertext`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Hypertext]`_`f, a command has the format `B100`F9d9Module.Procedure `*parameters`* ~`f`b and is activated with a mouse middle-click. Text displayed anywhere on the screen can be edited, and if formatted with the required command syntax, can be middle-clicked and executed. Any text file containing suitably-formatted commands can be used as a so-called `!tool text`!, thus serving as a user-configurable menu. Even the output of a previous command can be edited and used as a new command. This approach is radically different from both conventional dialogue-oriented console menus or `F33f`_`[command-line interfaces`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Command-line_interface]`_`f but bears some similarities to the worksheet interface of the `F33f`_`[Macintosh Programmer's Workshop`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Macintosh_Programmer's_Workshop]`_`f.
Since it does not use graphical `F33f`_`[widgets`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Graphical_widget]`_`f, only plain text, but offers comparable functionality to a `F33f`_`[GUI`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=GUI]`_`f with a `F33f`_`[tiling window manager`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Tiling_window_manager]`_`f, it is referred to as a Text User Interface or TUI. For a short introduction, see the 2nd paragraph on page four of the first published `*Report on the Oberon System`*.`:cite-ref-4[`F5bf`_`[4`#cite-note-4]`_`f]
Oberon's `F33f`_`[UI`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=User_Interface]`_`f influenced the design of the `F33f`_`[Acme text editor and email client`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Acme_(text_editor)]`_`f for the `F33f`_`[Plan 9 from Bell Labs`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Plan_9_from_Bell_Labs]`_`f operating system.
>>In embedded systems
Modern `F33f`_`[embedded systems`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Embedded_system]`_`f are capable of displaying TUI on a monitor like personal computers. This functionality is usually implemented using specialized integrated circuits, modules, or using `F33f`_`[FPGA`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=FPGA]`_`f.
Video circuits or modules are usually controlled using `F33f`_`[VT100`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=VT100]`_`f-compatible command set over `F33f`_`[UART`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=UART]`_`f, FPGA designs usually allow direct video memory access.
>>Other uses
• The `F33f`_`[full screen editor`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Full_screen_editor]`_`f of the `F33f`_`[Commodore 64`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Commodore_64]`_`f 8-bit computers was advanced in its market segment for its time. Users could move the cursor over the entire screen area, entering and editing `F33f`_`[BASIC`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=BASIC]`_`f program lines, as well as `F33f`_`[direct mode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Direct_mode]`_`f commands. All Commodore `F33f`_`[8-bit`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=8-bit]`_`f computers used the `F33f`_`[PETSCII`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PETSCII]`_`f character set, which included character glyphs suitable for making a TUI.
• Apple's `F33f`_`[Macintosh Programmer's Workshop`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Macintosh_Programmer's_Workshop]`_`f programming environment included Commando, a TUI shell. It was the inspiration for BBEdit's shell worksheet.
• Later `F33f`_`[Apple II`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Apple_II]`_`f models included `F33f`_`[MouseText`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=MouseText]`_`f, a set of graphical glyphs used for making a TUI.
• The `F33f`_`[Corvus Concept`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Corvus_Concept]`_`f computer of 1982 used a `F33f`_`[function key`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Function_key]`_`f-based text interface on a full-page pivoting display.
>>See also
• `F33f`_`[Command-line interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Command-line_interface]`_`f (CLI)
• `F33f`_`[Console application`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Console_application]`_`f
• `F33f`_`[Natural-language user interface`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Natural-language_user_interface]`_`f
• `F33f`_`[Text-based game`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Text-based_game]`_`f, a game using a TUI
• `F33f`_`[VGA text mode`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=VGA_text_mode]`_`f
• `F33f`_`[MDA`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=IBM_Monochrome_Display_Adapter]`_`f
>>>Examples of programming libraries
• `F33f`_`[curses (programming library)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Curses_(programming_library)]`_`f
• `F33f`_`[ncurses`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ncurses]`_`f
• `F33f`_`[CDK`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CDK_(programming_library)]`_`f
• `F33f`_`[Newt`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Newt_(programming_library)]`_`f, a widget-based toolkit
• `F33f`_`[S-Lang`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=S-Lang]`_`f
• `F33f`_`[Turbo Vision`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Turbo_Vision]`_`f
• `F33f`_`[Early versions of Visual Basic`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Visual_Basic_(classic)]`_`f
>>References
`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f cmd prompt full screen in Windows 7. Social.technet.microsoft.com. Retrieved on 2013-06-15.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f `:citerefwarren2019`aWarren, Tom (May 6, 2019). "Microsoft unveils Windows Terminal, a new command line app for Windows". `*The Verge`*.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "OpenVMS RTL Screen Management (SMG$) Manual". `*hpe.com`*. 2001. Retrieved 2021-01-01.
`:cite-note-4`!4.`! `F0af`_`[↑`#cite-ref-4]`_`f `:citerefwirthgutknecht1988`a`F33f`_`[Wirth, Niklaus`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Niklaus_Wirth]`_`f; Gutknecht, Jürg (1988). `*The Oberon System`* (PDF) (Technical report). ETH Eidgenössische Technische Hochschule Zürich, Institut für Informatik. Vol. 88. `F33f`_`[doi`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Doi_(identifier)]`_`f:10.3929/ethz-a-000487176.
`c`F0af`_`[↑ Back to top`#top]`_`f`a